﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DblogStudio.BLL;
using DblogStudio.DAL.Models;
using DblogStudio.GUI.Common;
using DblogStudio.GUI.Utils;
using DblogStudio.Utils;

namespace DblogStudio.GUI.DuLieu
{
    public partial class FormXepLichBaoTri : BaseDialog
    {
        ChiTietMay chiTietMay;
        LichBaoTri lichBaoTri;
        public event Common.TListChangedEventHandler OnChanged;

        public FormXepLichBaoTri(ChiTietMay chiTietMay, LichBaoTri lichBaoTri = null)
        {
            InitializeComponent();
            this.chiTietMay = chiTietMay;
            this.lichBaoTri = lichBaoTri;
            LoadNhiemVu();
            InitInterface();
        }

        void InitInterface()
        {
            if (lichBaoTri != null)
            {
                this.Text = string.Format("Chỉnh lịch bảo trì cho {0}", chiTietMay.TenChiTietMay);
                chkTiepTucBoSung.Checked = false;
                chkTiepTucBoSung.Visible = false;
                numChuKy.Value = lichBaoTri.ChuKy;
                dtNgayBaoTri.Value = lichBaoTri.NgayBaoTri;
                cmbNhiemVuBaoTri.SelectedValue = lichBaoTri.MaNhiemVuBaoTri;
                cmbNhiemVuBaoTri.Enabled = false;
            }
            else
            {
                this.Text = string.Format("Thêm lịch bảo trì cho {0}", chiTietMay.TenChiTietMay);
                chkTiepTucBoSung.Checked = true;
                chkTiepTucBoSung.Visible = true;
                numChuKy.Value = 7;
                dtNgayBaoTri.Value = DateTime.Now.AddDays(7);
                cmbNhiemVuBaoTri.Enabled = true;
            }
        }

        void LoadNhiemVu()
        {
            cmbNhiemVuBaoTri.DataSource = BizNhiemVuBaoTri.GetList();
            cmbNhiemVuBaoTri.DisplayMember = "TenNhiemVuBaoTri";
            cmbNhiemVuBaoTri.ValueMember = "MaNhiemVuBaoTri";
        }

        bool ValidateData()
        {
            errorNotify.Clear();
            if (cmbNhiemVuBaoTri.SelectedValue == null)
            {
                errorNotify.SetError(cmbNhiemVuBaoTri, "Không được bỏ trống nhiệm vụ bảo trì");
                cmbNhiemVuBaoTri.Focus();
                return false;
            }
            //if (dtNgayBaoTri.Value <=DateTime.Now)
            //{
            //    errorNotify.SetError(dtNgayBaoTri, string.Format("Ngày bảo trì phải lớn hơn ngày hiện tại"));
            //    dtNgayBaoTri.Focus();
            //    return false;
            //}
            return true;
        }

        private void btnDongY_Click(object sender, EventArgs e)
        {
            if (ValidateData())
            {
                if (lichBaoTri != null)
                {
                    #region Cập nhật thông tin
                    lichBaoTri.ChuKy = (int)numChuKy.Value;
                    lichBaoTri.NgayBaoTri = dtNgayBaoTri.Value;
                    lichBaoTri.GhiChu = txtGhiChu.Text;
                    var rs = BizLichBaoTri.Update(lichBaoTri);
                    if (rs == CODE_RESULT_RETURN.ThanhCong)
                    {
                        OnChanged(null, null);
                        this.DialogResult = System.Windows.Forms.DialogResult.OK;
                    }
                    else
                    {
                        DialogUtils.ShowError(string.Format(ERROR_CONSTANT_STRING.LOI_CAPNHAT, ENTITY_NAME.LICHBAOTRI));
                        return;
                    }
                    #endregion
                }
                else
                {
                    #region Thêm mới bộ phận máy
                    lichBaoTri = new LichBaoTri();
                    lichBaoTri.MaChiTietMay = chiTietMay.MaChiTietMay;
                    lichBaoTri.MaNhiemVuBaoTri = cmbNhiemVuBaoTri.SelectedValue.ToString();
                    lichBaoTri.ChuKy = (int)numChuKy.Value;
                    lichBaoTri.NgayBaoTri = dtNgayBaoTri.Value;
                    var rs = BizLichBaoTri.Add(lichBaoTri);
                    lichBaoTri = null;
                    if (rs == CODE_RESULT_RETURN.ThanhCong)
                    {
                        //Sau khi thêm thành công kiểm tra có cho nhập thêm hay không
                        OnChanged(this, null);
                        if (chkTiepTucBoSung.Checked)
                        {
                            InitInterface();
                            cmbNhiemVuBaoTri.Focus();
                        }
                        else
                        {
                            this.DialogResult = System.Windows.Forms.DialogResult.OK;
                        }
                    }
                    else if (rs == CODE_RESULT_RETURN.TenTrung)
                    {
                        errorNotify.Clear();
                        errorNotify.SetError(cmbNhiemVuBaoTri, string.Format("Đã tạo nhiệm vụ bảo trì này cho chi tiết máy"));
                        cmbNhiemVuBaoTri.Focus();
                        return;
                    }
                    else
                    {
                        DialogUtils.ShowError(string.Format(ERROR_CONSTANT_STRING.LOI_THEM, ENTITY_NAME.LICHBAOTRI));
                        return;
                    }
                    #endregion
                }
            }
        }


    }
}
